package com.hoshiicloud.shxping.dto;

import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.sql.Time;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 订单列表dto
 */
@Data
public class OrderDTO implements Serializable {

    private static final long serialVersionUID = -1L;
    /**
     * 订单id
     */
    @ApiModelProperty(name = "orderId", value = "订单id", dataType = "java.lang.Long")
    private Long orderId;
    /**
     * 订单编号
     */
    @ApiModelProperty(name = "orderNo", value = "订单编号", dataType = "java.lang.String")
    private String orderNo;

    /**
     * 物流快递单号
     */
    @ApiModelProperty(name = "invoiceNo", value = "物流快递单号", dataType = "java.lang.String")
    private String invoiceNo;


    /**
     * 支付单号
     */
    @ApiModelProperty(name = "paybillNo", value = "支付单号", dataType = "java.lang.Long")
    private Long paybillNo;

    /**
     * 店铺id
     */
    @ApiModelProperty(name = "storeId", value = "店铺id", dataType = "java.lang.Long")
    private Long storeId;

    /**
     * 店铺名称
     */
    @ApiModelProperty(name = "storeName", value = "店铺名称", dataType = "java.lang.String")
    private String storeName;
    /**
     * 订单状态：0-已取消  1-待付款  2-待发货 3-待收货  4-已关闭  5-已完成
     */
    @ApiModelProperty(name = "orderStatus", value = "订单状态：0-已取消  1-待付款  2-待发货 3-待收货  4-已关闭  5-已完成", dataType = "java.lang.Integer")
    private Integer orderStatus;

    /**
     * 物流状态
     */
    @ApiModelProperty(name = "shippingStatus", value = "0，待发货（待配送）；1，已发货(配送中)  2，已收货 ;3 待核销(待自提)；4 已核销(已自提)", dataType = "java.lang.Integer")
    private Integer shippingStatus;


    /**
     * 支付状态
     */
    @ApiModelProperty(name = "payStatus", value = "0-待付款 1-已付款 2-已退款", dataType = "java.lang.Integer")
    private Integer payStatus;


    /**
     * 订单状态名
     */
    @ApiModelProperty(name = "orderCnStatus", value = "订单状态名", dataType = "java.lang.String")
    private String orderCnStatus;

    /**
     * 评价状态：0-待评价  1-已评价
     */
    @ApiModelProperty(name = "commented", value = "评价状态：0-待评价  1-已评价", dataType = "java.lang.Integer")
    private Integer commented;

    /**
     * 售后状态
     */
    @ApiModelProperty(name = "serviceStatus", value = "售后状态", dataType = "java.lang.Integer")
    private Integer serviceStatus;
    /**
     * 售后状态名
     */
    @ApiModelProperty(name = "serviceCnStatus", value = "售后状态名", dataType = "java.lang.String")
    private String serviceCnStatus;
    /**
     * 商品数量
     */
    @ApiModelProperty(name = "goodsCount", value = "商品数量", dataType = "java.lang.Integer")
    private Integer goodsCount;
    /**
     * 商品合计
     */

    @ApiModelProperty(name = "goodsAmount", value = "商品合计", dataType = "java.lang.Double")
    private BigDecimal goodsAmount;

    /**
     * 进口税
     */
    @ApiModelProperty(name = "importTax", value = "进口税", dataType = "java.lang.Double")
    private BigDecimal importTax;
    /**
     * 运费
     */
    @ApiModelProperty(name = "id", value = "运费", dataType = "java.lang.Double")
    private BigDecimal shippingFee;
    /**
     * 优惠金额
     */
    @ApiModelProperty(name = "benefitsAmount", value = "优惠金额", dataType = "java.lang.Double")
    private BigDecimal benefitsAmount;
    /**
     * 实付款
     */
    @ApiModelProperty(name = "payAmount", value = "实付款", dataType = "java.lang.Double")
    private BigDecimal payAmount;
    /**
     * 订单备注
     */
    @ApiModelProperty(name = "postscript", value = "订单备注", dataType = "java.lang.String")
    private String postscript;
    /**
     * 支付方式
     */
    @ApiModelProperty(name = "paymentName", value = "支付方式", dataType = "java.lang.String")
    private String paymentName;
    /**
     * 创建时间
     */
    @ApiModelProperty(name = "createTime", value = "创建时间", dataType = "java.lang.String")
    private String createTime;
    /**
     * 付款时间
     */
    @ApiModelProperty(name = "payTime", value = "付款时间", dataType = "java.lang.String")
    private String payTime;
    /**
     * 发货时间
     */
    @ApiModelProperty(name = "deliveryTime", value = "发货时间", dataType = "java.lang.String")
    private String deliveryTime;
    /**
     * 收货人
     */
    @ApiModelProperty(name = "consignee", value = "收货人", dataType = "java.lang.String")
    private String consignee;

    /**
     * 收货人电话
     */
    @ApiModelProperty(name = "telephone", value = "收货人电话", dataType = "java.lang.String")
    private String telephone;

    /**
     * 收货地址ID
     */
    @ApiModelProperty(name = "addressId", value = "收货详细地址ID", dataType = "java.lang.Long")
    private Long addressId;

    /**
     * 收货详细地址
     */
    @ApiModelProperty(name = "address", value = "收货详细地址", dataType = "java.lang.String")
    private String address;

    // 收货地址经度
    @ApiModelProperty(name = "addressLongitude", value = "收货地址经度", dataType = "java.math.BigDecimal")
    private BigDecimal addressLongitude;

    // 收货地址维度
    @ApiModelProperty(name = "addressLatitude", value = "收货地址维度", dataType = "java.math.BigDecimal")
    private BigDecimal addressLatitude;

    // 收货时间
    @ApiModelProperty(name = "receivedtime", value = "收货时间", dataType = "java.util.Date")
    private LocalDateTime receivedtime;

    // 门牌号
    @ApiModelProperty(name = "housenumber", value = "门牌号", dataType = "java.lang.String")
    private String housenumber;

    /**
     * 核销码
     */
    @ApiModelProperty(name = "code", value = "核销", dataType = "java.lang.String")
    private String code;

    /**
     * 订单商品列表
     */
    private List<OrderGoodsDTO> list;

    // 商家电话
    @ApiModelProperty(name = "storeTelephone", value = "商家电话", dataType = "java.lang.String")
    private String storeTelephone;
    // 商家地址
    @ApiModelProperty(name = "storeAddress", value = "商家地址", dataType = "java.lang.String")
    private String storeAddress;
    // 商家经度
    @ApiModelProperty(name = "storeLongitude", value = "商家经度", dataType = "java.math.BigDecimal")
    private BigDecimal storeLongitude;
    // 商家维度
    @ApiModelProperty(name = "storeLatitude", value = "商家维度", dataType = "java.math.BigDecimal")
    private BigDecimal storeLatitude;
    // 距离
    @ApiModelProperty(name = "distance", value = "距离", dataType = "java.lang.Double")
    private Double distance;
    /**
     * 营业开始时间
     */
    @TableField("opening_start")
    private Time openingStart;
    /**
     * 营业结束时间
     */
    @TableField("opening_end")
    private Time openingEnd;


    /**
     * 提货编号(每天数字自增）
     */
    @ApiModelProperty(name = "pickUpCode", value = "提货编号", dataType = "java.lang.String")
    private String pickUpCode;
}
